package com.atguitu.campus.renwendemo.config;

import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;

import java.util.Collections;

/**
 * MyBatisX逆向工程代码生成器
 */
public class CodeGenerator {
    public static void main(String[] args) {
        // 数据库连接配置
        String url = "jdbc:mysql://localhost:3306/renwen?useSSL=false&serverTimezone=UTC";
        String username = "root";
        String password = "123456";

        FastAutoGenerator.create(url, username, password)
                // 全局配置
                .globalConfig(builder -> {
                    builder.author("admin") // 设置作者
                            .outputDir("C:/project"); // 指定输出目录
                })
                // 包配置
                .packageConfig(builder -> {
                    builder.parent("com.atguitu.campus.renwendemo") // 设置父包名
                            //.moduleName("user") // 设置父包模块名
                            .pathInfo(Collections.singletonMap(OutputFile.xml, "C:/project/mapper")); // 设置mapperXml生成路径
                })
                // 策略配置
                .strategyConfig(builder -> {
                    builder.addInclude("menu", "role","role_menu","user_role") // 设置需要生成的表名
                            .addTablePrefix("t_", "c_"); // 设置过滤表前缀

                    // 实体类策略配置
                    builder.entityBuilder()
                            .enableLombok() // 开启lombok
                            .logicDeleteColumnName("deleted") // 逻辑删除字段名
                            .versionColumnName("version"); // 乐观锁字段名

                    // Controller策略配置
                    builder.controllerBuilder()
                            .enableRestStyle(); // 开启RestController风格
                })
                // 使用Freemarker引擎模板，默认的是Velocity引擎模板
                .templateEngine(new FreemarkerTemplateEngine())
                .execute();
    }
}

